console.log("=======执行开发任务=====");
const gulp=require('gulp');
// 1 del插件 
const del=require('del');
// 1 引入 gulp-less
const gulp_sass = require("gulp-sass");
// 1 引入添加浏览器前缀
const autoprefixer = require("gulp-autoprefixer");
// 1 引入生成map文件的插件
const gulp_sourcemaps=require("gulp-sourcemaps");
// 1 引入 babel插件
const babel = require("gulp-babel");
// 1 引入 文件合并 插件
const fileInclude =require("gulp-file-include")
// 1  引入插件
const browserSync=require("browser-sync")

// 0 编写删除任务 
gulp.task("del", () => {
  return del(["dist"]);
});

// 1 处理css
gulp.task("css",()=>{
  return gulp.src("src/css/*.scss")
  .pipe(gulp_sourcemaps.init())
  .pipe(gulp_sass())
  .pipe(
    autoprefixer({
      browsers: ["since 2015"]
    })
  )
  .pipe(gulp_sourcemaps.write('.'))
  .pipe(gulp.dest("dist/css"));
});

// 2 处理js
gulp.task("js",()=>{
  return (
    gulp
      .src("src/js/*.js")
      .pipe(gulp_sourcemaps.init())
      .pipe( babel() )
      .pipe(gulp_sourcemaps.write("."))
      .pipe(gulp.dest("dist/js"))
  );
});

// 3  处理html 
gulp.task("html",()=>{
  return gulp.src("src/*.html")
  .pipe(fileInclude(
    {
      prefix:"@@",
      basepath:"src/components",
      // context:{
      //   appname:"26大项目 1个亿"
      // }
    }
  ))
  .pipe(gulp.dest("dist"));
})

// 4 处理第三方的插件和库
gulp.task('lib',()=>{
  return gulp.src("src/lib/**")
  .pipe(gulp.dest("dist/lib"));
});

// 5.1 在dist目录下开启服务器 源代码的修改 自动刷新浏览器 
gulp.task("serve",()=>{
  browserSync({
    server:{
      baseDir:"dist"
    },
    port:9999 ,
    // 页面右上角黑色的提示框 
    notify:false
  });
  // a 监控html标签改变  先合并html文件  自动刷新 浏览器
  gulp.watch(['src/*.html','src/components/*.html'],gulp.series(['html','reload']));
  // b 监控less文件改变  先执行自动编译  自动刷新浏览器
  gulp.watch(['src/css/*.scss'],gulp.series(['css','reload']));
  // c 监控js文件改变  先执行自动编译  自动刷新浏览器
  gulp.watch(['src/js/*.js'],gulp.series(['js','reload']));
  // d 监控第三方的插件 先执行复制 再自动刷新浏览器
  gulp.watch(['src/lib/**'],gulp.series(['lib','reload']));

});

// 5.2  刷新
gulp.task("reload",(done)=>{
  browserSync.reload();
  done();
});



// 00 编写默认任务
gulp.task("default",gulp.series(
  [
    'del',
    'css',
    'js',
    'html',
    'lib',
    'serve'
  ]))